/*
 * @ : Copyright (c) 2021 Phytium Information Technology, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0.
 *
 * @Date: 2021-04-25 16:44:23
 * @LastEditTime: 2021-08-26 10:54:45
 * @Description:  Description of file
 * @Modify History:
 * * * Ver   Who        Date         Changes
 * * ----- ------     --------    --------------------------------------
 */
#include "ft_debug.h"

#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
void FtDumpHexByte(const u8 *ptr, u32 buflen)
{
    u8 *buf = (u8 *)ptr;
    fsize_t i, j;

    for (i = 0; i < buflen; i += 16)
    {
        printf("%p: ", ptr + i);

        for (j = 0; j < 16; j++)
            if (i + j < buflen)
                printf("%02X ", buf[i + j]);
            else
                printf("   ");
        printf(" ");

        for (j = 0; j < 16; j++)
            if (i + j < buflen)
                printf("%c", (char)(__is_print(buf[i + j]) ? buf[i + j] : '.'));
        printf("\r\n");
    }
}

void FtDumpHexWord(const u32 *ptr, u32 buflen)
{
    u32 *buf = (u32 *)ptr;
    fsize_t i, j;
    buflen = buflen / 4;
    for (i = 0; i < buflen; i += 4)
    {
        printf("%p: ", ptr + i);

        for (j = 0; j < 4; j++)
        {
            if (i + j < buflen)
            {
                printf("%lx ", buf[i + j]);
            }
            else
            {
                printf("   ");
            }
        }

        printf(" ");

        for (j = 0; j < 16; j++)
            if (i + j < buflen)
                printf("%c", (char)(__is_print(buf[i + j]) ? buf[i + j] : '.'));
        printf("\r\n");
    }
}
